package 字符串.替换数字54_卡码;
/*
给定一个字符串 s，它包含小写字母和数字字符，请编写一个函数，将字符串中的字母字符保持不变，而将每个数字字符替换为number。 例如，对于输入字符串 "a1b2c3"，函数应该将其转换为 "anumberbnumbercnumber"。

输入描述
输入一个字符串 s,s 仅包含小写字母和数字字符。
输出描述
打印一个新的字符串，其中每个数字字符都被替换为了number

输入示例
a1b2c3
输出示例
anumberbnumbercnumber

提示信息
数据范围：
1 <= s.length < 10000。

思路：
        在原数组上修改是不现实的，因为用到了扩展，即将一个位置的数字扩展成了六个，所以必须要新建一个数组
      1. 当是数字的时候就将长度扩展6个，字母则还是1个
      2. 从后往前插入，从前往后插入也行
* */
public class Solution {
    public static void main(String[] args) {
        String s = "a1";
        char[] str = s.toCharArray();
        int strLen = str.length;
        int len = 0;
        char[] temp; // 用于创建新的大数组
        for (int i = 0; i < str.length; i ++){
            if (checkIsStr(str[i])){
                len += 1;
            } else {
                len += 6;
            }
        }
        temp = new char[len];
        int l = str.length - 1, r = len - 1;
        while (strLen -- > 0){
            if (checkIsStr(str[l])){
                temp[r --] = str[l];
            }else{
                temp[r --] = 'r';
                temp[r --] = 'e';
                temp[r --] = 'b';
                temp[r --] = 'm';
                temp[r --] = 'u';
                temp[r --] = 'n';
            }
            l --;
        }
        for (int i = 0; i < len; i ++){
            System.out.print(temp[i]);
        }
    }

    private static boolean checkIsStr(char str) {
        if (str >= 0 && str <= '9'){
            return false;
        }
        return true;
    }
}
